1. Field of the Invention
The present invention relates to a software object management system for computers, and more particularly to a system which selectively performs various transformations to objects in a manner which is transparent to application programs which handle the objects. These transformations include, but are not limited to, changes in format, changes in storage location, and authentication.
2. State of the Art
When an application program performs operations upon a file, typically the file must be in a format which is native to that application. For example, a text editor may be only designed to handle plain text files, and therefore would not recognize special codes and the like which may be present if the file is in the format of a word processing application or a database. When a user selects a command to open a file, the text editor issues a call to a computer file system to list the files which are available to be opened. As part of this call, the application program may inform the operating system of the type of files it is capable of handling, e.g. "text" files. In response, the file system only returns information about that particular type of file. In this case, therefore, the usere's selection of files to be opened is limited to files of the identified type.
To overcome these types of limitations, many application programs are provided with built-in, or plug-in, conversion facilities. For instance, a word processing program may have a converter, or translator, for converting files in the format of another word processing program into its native format. In this situation, when the word processing program issues a call to open a file, it may inform the file system of not only its own native format, but also the format of any other type of file for which it has a translator. In response, the file system returns a list of files which are in the native format of the word processing program, as well as files which can be translated into that format by the program.
In addition to the limitations associated with file formats, similar concerns apply to the sites from which an application program can retrieve files, or to which it can store them. Many programs can only communicate with a local file system, and are not capable of accessing files at remote sites, for example those stored on an FTP file server. Typically, files are stored at such sites in a compressed form. Therefore, in order to retrieve a file from such a site, the application program must be capable of communicating with the FTP server to download the file, decompress it, and then translate it into its native format.
Another type of transformation which may have to be carried out pertains to the field of authentication. To limit unauthorized access and/or inhibit modification, documents may be encrypted with a password or encoded with a digital signature. Before an application can process such objects, they have to be decrypted and/or have their digital signatures verified.
The foregoing examples are merely illustrative of the types of transformations which must be performed on an object before it is in a state where it can be handled by a given application program. As the number of application programs with individual native formats continues to grow, it can be seen that the number of different conversion facilities which these programs must include will also have to increase, if they are to be compatible with one another. Similarly, as more types of file storage facilities become available, each with its own access protocol and/or encoding scheme, and more security measures are employed to control access and modification of objects, additional functionality must be built into the programs. At some point, it becomes impractical to add further translators and conversion facilities to an application program, as a result of which its file access and storage capabilities are limited.
It is desirable, therefore, to provide a mechanism via which application programs can be provided with access to files of a variety of different types, without requiring each program to include conversion facilities for each of the different types of files and each of the different sites from which such access is desired. Doing so enables the application programs to be streamlined so that they need only be able to operate on files of in a native state, without having to perform all of the various types of transformations that may be necessary to convert the file to and from that state.